package in.lib.view;
import android.content.Context;
import android.content.Intent;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.ImageView;
import com.nostra13.universalimageloader.core.ImageLoader;
import in.lib.Constants;
import in.lib.manager.ImageOptionsManager;
import in.lib.manager.SettingsManager;
import in.lib.utils.BitUtils;
import in.model.SimpleUser;
import in.model.User;
import in.rob.client.ProfileActivity;
import in.rob.client.R;
import in.rob.client.dialog.PopupProfileDialog;
import lombok.Getter;
public class AvatarImageView extends ImageView implements OnClickListener, OnLongClickListener
{
@Getter private boolean clickable = true;
@Getter private boolean longClickable = true;
@Getter private SimpleUser user;
public AvatarImageView(Context context)
{
super(context);
init();
}
public AvatarImageView(Context context, AttributeSet attrs)
{
super(context, attrs);
init();
}
public AvatarImageView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
init();
}
public void init()
{
clickable = super.isClickable();
longClickable = super.isLongClickable();
setOnClickListener(clickable ? this : null);
setOnLongClickListener(longClickable ? this : null);
}
@Override public void setClickable(boolean clickable)
{
super.setClickable(clickable);
this.clickable = clickable;
setOnClickListener(clickable ? this : null);
}
@Override public void setLongClickable(boolean longClickable)
{
super.setLongClickable(longClickable);
this.longClickable = true;
setOnLongClickListener(clickable ? this : null);
}
public void setUser(SimpleUser user)
{
setUser(user, false);
}
public void setUser(SimpleUser user, boolean force)
{
this.user = user;
if (force || BitUtils.contains(SettingsManager.getInstance().getShowHideBit(), Constants.BIT_SHOWHIDE_AVATARS))
{
setImageResource(R.drawable.default_avatar);
ImageLoader.getInstance().cancelDisplayTask(this);
if (user instanceof User && !((User)user).isAvatarDefault())
{
ImageLoader.getInstance().displayImage(user.getAvatarUrl() + "?w=" + SettingsManager.getInstance().getAvatarSize() + "&avatar=1&id=" + user.getId(), this, ImageOptionsManager.getInstance().getAvatarImageOptions());
}
setVisibility(View.VISIBLE);
}
else
{
setVisibility(View.GONE);
}
}
@Override public void onClick(View v)
{
if (user != null && user instanceof User)
{
Intent intent = new Intent(getContext(), ProfileActivity.class);
intent.putExtra(Constants.EXTRA_USER, (Parcelable)user);
getContext().startActivity(intent);
}
}
@Override public boolean onLongClick(View v)
{
if (user != null && user instanceof User)
{
Intent intent = new Intent(getContext(), PopupProfileDialog.class);
intent.putExtra(Constants.EXTRA_USER, (Parcelable)user);
getContext().startActivity(intent);
return true;
}
return false;
}
@Override public boolean onTouchEvent(MotionEvent event)
{
if (getDrawable() != null && (clickable || isClickable()) && user instanceof User)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
getDrawable().setAlpha(120);
}
else if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL || event.getAction() == MotionEvent.ACTION_OUTSIDE)
{
getDrawable().setAlpha(255);
}
}
return super.onTouchEvent(event);
}
}